package genetic.q3.functions;

import java.util.LinkedList;
import java.util.List;

import genetic.Function;
import genetic.Terminal;
import genetic.q3.functions.math.*;

public abstract class SymbolicRegressionTerminal extends Terminal implements Computable{
	public abstract double compute(double xVal);
	
	
	public static void main(String[] args) {
		List<Function> functions = new LinkedList<Function>();
		List<Terminal> terminals = new LinkedList<Terminal>();
		terminals.add(new X());
		terminals.add(new Constant(1));
		terminals.add(new Constant(2));
		terminals.add(new Constant(3));
		terminals.add(new Constant(4));
		terminals.add(new Constant(5));
		functions.add(new Divide());
		functions.add(new Minus());
		functions.add(new Mult());
		functions.add(new Plus());
		functions.add(new abs());
		functions.add(new acos());
		functions.add(new asin());
		functions.add(new atan());
		functions.add(new atan2());
		functions.add(new cbrt());
		functions.add(new ceil());
		//functions.add(new copySign());
		functions.add(new cos());
		functions.add(new cosh());
		functions.add(new exp());
		functions.add(new expm1());
		functions.add(new floor());
		//functions.add(new getExponent());
		functions.add(new hypot());
		functions.add(new IEEEremainder());
		functions.add(new log());
		functions.add(new log10());
		functions.add(new log1p());
		functions.add(new max());
		functions.add(new min());
		//functions.add(new nextAfter());
		//functions.add(new nextUp());
		functions.add(new pow());
		functions.add(new rint());
		functions.add(new round());
		//functions.add(new scalb());
		functions.add(new signum());
		functions.add(new sin());
		functions.add(new sinh());
		functions.add(new sqrt());
		functions.add(new tan());
		functions.add(new tanh());
		functions.add(new toDegrees());
		functions.add(new toRadians());
		functions.add(new ulp());
		
	}
	
}


